Online chats without displaying confidential information

ABSTRACT

Systems and methods are provided for online chats without displaying confidential information. A system sends, from a first online chat participant, an information request to a second online chat participant. The system receives, from the second online chat participant, a response based on the information request. The system notifies the first online chat participant of receiving the response from the second online chat participant without displaying confidential information of the response to the first online chat participant.

CLAIM OF PRIORITY

This application claims the benefit of U.S. Provisional PatentApplication No. 61/936,977 entitled SYSTEM AND METHOD FOR ONLINE CHATSWITHOUT DISPLAYING SECURE CONTENT, by Aniano, et al., filed Feb. 7, 2014and U.S. Provisional Patent Application No. 61/936,983 entitled SYSTEMAND METHOD FOR ROUTING ONLINE CHATS, by Aniano, et al., filed Feb. 7,2014, the entire contents of which are incorporated herein by reference.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

BACKGROUND

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart. The subject matter in the background section merely representsdifferent approaches, which in and of themselves may also be inventions.

Online chat refers to any kind of communication over a communicationnetwork that offers a real-time transmission of text messages fromsender to receiver. Online chat messages are generally short, whichenables other participants to respond quickly, thereby creating afeeling similar to a spoken conversation, which distinguishes onlinechatting from other text-based online communication forms such asInternet forums and email. Online chat may include point-to-pointcommunications as well as multicast communications from one sender tomany receivers. Online chat includes web-based applications that enablecommunication which is often directly addressed, but may be anonymousbetween users in a multi-user environment. Sometimes communicatingconfidential information during online chat is desirable. For example, acustomer service representative may be using an online chat session toassist a banking customer and may need the banking customer to enter thebanking customer's personal identification number, or P.I.N., tocontinue providing assistance. However, the banking customer does notwant to disclose the confidential P.I.N. to the customer servicerepresentative. Accordingly, it is desirable to provide techniques thatenable online chats without displaying confidential information.

BRIEF SUMMARY

In accordance with embodiments, there are provided systems and methodsfor online chats without displaying confidential information. Aninformation request is sent from a first online chat participant to asecond online chat participant. A response based on the informationrequest is received from the second online chat participant. The firstonline chat participant is notified of receiving the response from thesecond online chat participant without displaying confidentialinformation of the response to the first online chat participant. Forexample, during an online chat session, a customer servicerepresentative becomes the first online chat participant described aboveand sends a confidential information form as the information request toa banking customer for entering the banking customer's personalidentification number, or P.I.N., to continue providing assistance. Aback end server receives the confidential information form that includesthe banking customer's P.I.N. The back end server provides the bankingcustomer's account information, based on the banking customer's P.I.N.,to the customer service representative so that the customer servicerepresentative can continue providing assistance to the bankingcustomer, but without displaying the banking customer's P.I.N to thecustomer service representative. Accordingly, systems and methods areprovided which enable a database system to provide online chats withoutdisplaying confidential information.

While one or more implementations and techniques are described withreference to an embodiment in which online chats without displayingconfidential information is implemented in a system having anapplication server providing a front end for an on-demand databaseservice capable of supporting multiple tenants, the one or moreimplementations and techniques are not limited to multi-tenant databasesnor deployment on application servers. Embodiments may be practicedusing other database architectures, i.e., ORACLE®, DB2® by IBM and thelike without departing from the scope of the embodiments claimed.

Any of the above embodiments may be used alone or together with oneanother in any combination. The one or more implementations encompassedwithin this specification may also include embodiments that are onlypartially mentioned or alluded to or are not mentioned or alluded to atall in this brief summary or in the abstract. Although variousembodiments may have been motivated by various deficiencies with theprior art, which may be discussed or alluded to in one or more places inthe specification, the embodiments do not necessarily address any ofthese deficiencies. In other words, different embodiments may addressdifferent deficiencies that may be discussed in the specification. Someembodiments may only partially address some deficiencies or just onedeficiency that may be discussed in the specification, and someembodiments may not address any of these deficiencies.

BRIEF DESCRIPTION OF THE DRAWINGS

In the following drawings like reference numbers are used to refer tolike elements. Although the following figures depict various examples,the one or more implementations are not limited to the examples depictedin the figures.

FIG. 1 is an operational flow diagram illustrating a high level overviewof a method for online chats without displaying confidential informationin an embodiment;

FIG. 2 is a block diagram of a system that implements online chatswithout displaying confidential information in an embodiment;

FIG. 3 illustrates a block diagram of an example of an environmentwherein an on-demand database service might be used; and

FIG. 4 illustrates a block diagram of an embodiment of elements of FIG.3 and various possible interconnections between these elements.

DETAILED DESCRIPTION

General Overview

Systems and methods are provided for online chats without displayingconfidential information. As used herein, the term multi-tenant databasesystem refers to those systems in which various elements of hardware andsoftware of the database system may be shared by one or more customers.For example, a given application server may simultaneously processrequests for a great number of customers, and a given database table maystore rows for a potentially much greater number of customers. As usedherein, the term query plan refers to a set of steps used to accessinformation in a database system. Next, mechanisms and methods foronline chats without displaying confidential information will bedescribed with reference to example embodiments. The following detaileddescription will first describe a method for online chats withoutdisplaying confidential information. Next, a block diagram of an examplesystem that implements online chats without displaying confidentialinformation is described.

FIG. 1 is an operational flow diagram illustrating a high level overviewof a method 100 for online chats without displaying confidentialinformation. As shown in FIG. 1, a database system can provide onlinechats without displaying confidential information.

An online chat request is optionally received, block 102. For exampleand without limitation, this can include the database system receivingan online chat request from a banking customer who prefers to use onlinechat to request assistance from customer service representatives. Afterreceiving the online chat request, an agent is optionally identified torespond to the online chat request based on logic used to identifyagents to respond to voice calls, block 104. By way of example andwithout limitation, this can include the database system identifying acustomer service representative to respond to the banking customer'sonline chat request based on a call center's software that identifieswhich of the call center's agents will answer incoming telephone callsby evaluating skill levels and other qualifications of the agents, suchas the agents' workloads, whether they are on an existing phone call,etc.

Having identified an agent, the online chat request is routed to theagent, block 106. In embodiments, this can include the database systemrouting the banking customer's online chat request to the identifiedagent. The database system may integrate with the voice routing logic onthe customer side and/or the agent side to route chat requests and tocollect data on customers, agents, and online chats by intercepting andinteracting with all chat related events. This integration enables thedatabase system to fully utilize third-party voice routing logicprovided by telephony vendors, including the compilation of fullstatistical reports. After routing the online chat request to the agent,who may be referred to as the first online chat participant, the agentsends an information request to a second online chat participant, block108. For example and without limitation, during an online chat session,a customer service representative selects a confidential informationform from many different confidential information forms available in aninline frame in the agent chat window and sends the confidentialinformation form to the banking customer for entering the bankingcustomer's personal identification number, or P.I.N., to enable theagent to continue providing assistance. Alternatively, the customerservice representative selects a link from many different availablelinks in an inline frame in the agent chat window to send a confidentialinformation form of many different confidential information formsavailable to the banking customer.

Although this example describes an agent selecting a confidentialinformation form from many different confidential information formsavailable in an inline frame in the agent chat window and sending theconfidential information form to a customer, the agent may simply sendan information request the customer via the chat window and the customermay select a confidential information form from many differentconfidential information forms available in an inline frame in thecustomer chat window and use the confidential information form torespond to the information request. Alternatively, the agent and/or thecustomer may use their own HTML form via an HTTP post call instead ofusing an inline frame in a chat window. Either the agent or the customermay select and use a confidential information form via the use ofapplication programming interfaces on the agent's workstation or thecustomer's client device, such as JavaScript API's. Even if a customermay want to disclose confidential information to a customer servicerepresentative, the customer service representative may select and senda confidential information form to the customer because of regulatoryrequirements for processing confidential information, such as the HealthInsurance Portability and Accountability Act of 1996 (HIPAA).

Having sent the information request to the second online chatparticipant, a response based on the information request is receivedfrom the second online chat participant, block 110. By way of exampleand without limitation, this can include a back end server receiving theconfidential information form that includes the banking customer'sP.I.N. After receiving the response, the first online chat participantis notified of receiving the response from the second online chatparticipant without displaying confidential information of the responseto the first online chat participant, block 112. In embodiments, thiscan include the back end server providing the banking customer's accountinformation, based on the banking customer's P.I.N., to the customerservice representative so that the customer service representative cancontinue providing assistance to the banking customer, but withoutdisplaying the banking customer's P.I.N to the customer servicerepresentative. Accordingly, systems and methods are provided whichenable a database system to provide online chats without displayingconfidential information.

The method 100 may be repeated as desired. Although this disclosuredescribes the blocks 102-112 executing in a particular order, the blocks102-112 may be executed in a different order. In other implementations,each of the blocks 102-112 may also be executed in combination withother blocks and/or some blocks may be divided into a different set ofblocks.

FIG. 2 illustrates a block diagram of an example system that implementsonline chats without displaying confidential information, under anembodiment. As shown in FIG. 2, system 200 may illustrate a cloudcomputing environment in which data, applications, services, and otherresources are stored and delivered through shared data-centers andappear as a single point of access for the users. The system 200 mayalso represent any other type of distributed computer networkenvironment in which servers control the storage and distribution ofresources and services for different client users.

In an embodiment, the system 200 represents a cloud computing systemthat includes a first client 202, a second client 204, a third client206, a call center 208 which includes a first workstation 210 and asecond workstation 212, and a first server 214 and a second server 216that may be provided by a hosting company. Although the clients 202-206may be any type of client devices, such as wearable devices, the clients202-206 may be referred to as the desktop computer 202, the laptopcomputer 204, and the mobile phone 206, while the servers 214-216 may bereferred to as the routing server 214 and the confidential informationserver 216. Even though the separation of functions may be preferablefrom a security perspective, in some embodiments the routing server 214and the confidential information server 216 may be implemented in asingle server. The routing server 214 includes voice routing logic 220and the confidential information server 216 includes confidentialinformation 222. The clients 202-206, the call center 208, and theservers 214-216 communicate via a network 218. Although FIG. 2 depictsthe system 200 with three clients 202-206, one call center 208, twoworkstations 210-212, two servers 214-216, and one network 218, thesystem 200 may include any number of clients 202-206, any number of callcenters 208, any number of workstations 210-212, any number of servers214-216, and any number of networks 218. The clients 202-206 and theworkstations 210-212 may each be substantially similar to the usersystems 312 described below in reference to FIG. 3.

In another example, a customer visiting a store that sells luxury coatsuses an in-store device made available by the store for customers tovisit a website that sells luxury coats and to request an online chatwith a customer service representative. The routing server 214 uses thevoice routing logic 220 to identify the agent using the workstation 210as the best customer service representative who is currently availablefor such an online chat. During the online chat, the customer servicerepresentative identifies the location of the in-store device at a storethat sells the luxury coats, and sends additional photos of the luxurycoats which are unavailable in the store via the agent chat window tothe customer, who indicates, via the online chat, a desire to purchaseone of the coats depicted in the photos. The customer servicerepresentative clicks on a button displayed in the agent chat window bythe workstation 210, which causes a confidential information form to popup in the customer's chat window. The customer enters their credit cardnumber in the confidential information form, which the laptop computer204 sends to the confidential information server 216, which stores thecredit card number in the confidential information 222 withoutdisplaying the credit card number on the workstation 210 of the customerservice representative. The confidential information server 216 notifiesthe customer service representative that the sale has been approvedbased on the customer's credit card number, the customer servicerepresentative informs the customer about the approval via an onlinechat message, and the customer service representative begins processingthe order.

System Overview

FIG. 3 illustrates a block diagram of an environment 310 wherein anon-demand database service might be used. The environment 310 mayinclude user systems 312, a network 314, a system 316, a processorsystem 317, an application platform 318, a network interface 320, atenant data storage 322, a system data storage 324, program code 326,and a process space 328. In other embodiments, the environment 310 maynot have all of the components listed and/or may have other elementsinstead of, or in addition to, those listed above.

The environment 310 is an environment in which an on-demand databaseservice exists. A user system 312 may be any machine or system that isused by a user to access a database user system. For example, any of theuser systems 312 can be a handheld computing device, a mobile phone, alaptop computer, a work station, and/or a network of computing devices.As illustrated in FIG. 3 (and in more detail in FIG. 4) the user systems312 might interact via the network 314 with an on-demand databaseservice, which is the system 316.

An on-demand database service, such as the system 316, is a databasesystem that is made available to outside users that do not need tonecessarily be concerned with building and/or maintaining the databasesystem, but instead may be available for their use when the users needthe database system (e.g., on the demand of the users). Some on-demanddatabase services may store information from one or more tenants storedinto tables of a common database image to form a multi-tenant databasesystem (MTS). Accordingly, the “on-demand database service 316” and the“system 316” will be used interchangeably herein. A database image mayinclude one or more database objects. A relational database managementsystem (RDMS) or the equivalent may execute storage and retrieval ofinformation against the database object(s). The application platform 318may be a framework that allows the applications of the system 316 torun, such as the hardware and/or software, e.g., the operating system.In an embodiment, the on-demand database service 316 may include theapplication platform 318 which enables creation, managing and executingone or more applications developed by the provider of the on-demanddatabase service, users accessing the on-demand database service viauser systems 312, or third party application developers accessing theon-demand database service via the user systems 312.

The users of the user systems 312 may differ in their respectivecapacities, and the capacity of a particular user system 312 might beentirely determined by permissions (permission levels) for the currentuser. For example, where a salesperson is using a particular user system312 to interact with the system 316, that user system 312 has thecapacities allotted to that salesperson. However, while an administratoris using that user system 312 to interact with the system 316, that usersystem 312 has the capacities allotted to that administrator. In systemswith a hierarchical role model, users at one permission level may haveaccess to applications, data, and database information accessible by alower permission level user, but may not have access to certainapplications, database information, and data accessible by a user at ahigher permission level. Thus, different users will have differentcapabilities with regard to accessing and modifying application anddatabase information, depending on a user's security or permissionlevel.

The network 314 is any network or combination of networks of devicesthat communicate with one another. For example, the network 314 can beany one or any combination of a LAN (local area network), WAN (wide areanetwork), telephone network, wireless network, point-to-point network,star network, token ring network, hub network, or other appropriateconfiguration. As the most common type of computer network in currentuse is a TCP/IP (Transfer Control Protocol and Internet Protocol)network, such as the global internetwork of networks often referred toas the “Internet” with a capital “I,” that network will be used in manyof the examples herein. However, it should be understood that thenetworks that the one or more implementations might use are not solimited, although TCP/IP is a frequently implemented protocol.

The user systems 312 might communicate with the system 316 using TCP/IPand, at a higher network level, use other common Internet protocols tocommunicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTPis used, the user systems 312 might include an HTTP client commonlyreferred to as a “browser” for sending and receiving HTTP messages toand from an HTTP server at the system 316. Such an HTTP server might beimplemented as the sole network interface between the system 316 and thenetwork 314, but other techniques might be used as well or instead. Insome implementations, the interface between the system 316 and thenetwork 314 includes load sharing functionality, such as round-robinHTTP request distributors to balance loads and distribute incoming HTTPrequests evenly over a plurality of servers. At least as for the usersthat are accessing that server, each of the plurality of servers hasaccess to the MTS' data; however, other alternative configurations maybe used instead.

In one embodiment, the system 316, shown in FIG. 3, implements aweb-based customer relationship management (CRM) system. For example, inone embodiment, the system 316 includes application servers configuredto implement and execute CRM software applications as well as providerelated data, code, forms, webpages and other information to and fromthe user systems 312 and to store to, and retrieve from, a databasesystem related data, objects, and Webpage content. With a multi-tenantsystem, data for multiple tenants may be stored in the same physicaldatabase object, however, tenant data typically is arranged so that dataof one tenant is kept logically separate from that of other tenants sothat one tenant does not have access to another tenant's data, unlesssuch data is expressly shared. In certain embodiments, the system 316implements applications other than, or in addition to, a CRMapplication. For example, the system 316 may provide tenant access tomultiple hosted (standard and custom) applications, including a CRMapplication. User (or third party developer) applications, which may ormay not include CRM, may be supported by the application platform 318,which manages creation, storage of the applications into one or moredatabase objects and executing of the applications in a virtual machinein the process space of the system 316.

One arrangement for elements of the system 316 is shown in FIG. 3,including the network interface 320, the application platform 318, thetenant data storage 322 for tenant data 323, the system data storage 324for system data 325 accessible to the system 316 and possibly multipletenants, the program code 326 for implementing various functions of thesystem 316, and the process space 328 for executing MTS system processesand tenant-specific processes, such as running applications as part ofan application hosting service. Additional processes that may execute onthe system 316 include database indexing processes.

Several elements in the system shown in FIG. 3 include conventional,well-known elements that are explained only briefly here. For example,each of the user systems 312 could include a desktop personal computer,workstation, laptop, PDA, cell phone, or any wireless access protocol(WAP) enabled device or any other computing device capable ofinterfacing directly or indirectly to the Internet or other networkconnection. Each of the user systems 312 typically runs an HTTP client,e.g., a browsing program, such as Microsoft's Internet Explorer browser,Netscape's Navigator browser, Opera's browser, or a WAP-enabled browserin the case of a cell phone, PDA or other wireless device, or the like,allowing a user (e.g., subscriber of the multi-tenant database system)of the user systems 312 to access, process and view information, pagesand applications available to it from the system 316 over the network314. Each of the user systems 312 also typically includes one or moreuser interface devices, such as a keyboard, a mouse, trackball, touchpad, touch screen, pen or the like, for interacting with a graphicaluser interface (GUI) provided by the browser on a display (e.g., amonitor screen, LCD display, etc.) in conjunction with pages, forms,applications and other information provided by the system 316 or othersystems or servers. For example, the user interface device can be usedto access data and applications hosted by the system 316, and to performsearches on stored data, and otherwise allow a user to interact withvarious GUI pages that may be presented to a user. As discussed above,embodiments are suitable for use with the Internet, which refers to aspecific global internetwork of networks. However, it should beunderstood that other networks can be used instead of the Internet, suchas an intranet, an extranet, a virtual private network (VPN), anon-TCP/IP based network, any LAN or WAN or the like.

According to one embodiment, each of the user systems 312 and all of itscomponents are operator configurable using applications, such as abrowser, including computer code run using a central processing unitsuch as an Intel Pentium® processor or the like. Similarly, the system316 (and additional instances of an MTS, where more than one is present)and all of their components might be operator configurable usingapplication(s) including computer code to run using a central processingunit such as the processor system 317, which may include an IntelPentium® processor or the like, and/or multiple processor units. Acomputer program product embodiment includes a machine-readable storagemedium (media) having instructions stored thereon/in which can be usedto program a computer to perform any of the processes of the embodimentsdescribed herein. Computer code for operating and configuring the system316 to intercommunicate and to process webpages, applications and otherdata and media content as described herein are preferably downloaded andstored on a hard disk, but the entire program code, or portions thereof,may also be stored in any other volatile or non-volatile memory mediumor device as is well known, such as a ROM or RAM, or provided on anymedia capable of storing program code, such as any type of rotatingmedia including floppy disks, optical discs, digital versatile disk(DVD), compact disk (CD), microdrive, and magneto-optical disks, andmagnetic or optical cards, nanosystems (including molecular memory ICs),or any type of media or device suitable for storing instructions and/ordata. Additionally, the entire program code, or portions thereof, may betransmitted and downloaded from a software source over a transmissionmedium, e.g., over the Internet, or from another server, as is wellknown, or transmitted over any other conventional network connection asis well known (e.g., extranet, VPN, LAN, etc.) using any communicationmedium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as arewell known. It will also be appreciated that computer code forimplementing embodiments can be implemented in any programming languagethat can be executed on a client system and/or server or server systemsuch as, for example, C, C++, HTML, any other markup language, Java™,JavaScript, ActiveX, any other scripting language, such as VBScript, andmany other programming languages as are well known may be used. (Java™is a trademark of Sun Microsystems, Inc.).

According to one embodiment, the system 316 is configured to providewebpages, forms, applications, data and media content to the user(client) systems 312 to support the access by the user systems 312 astenants of the system 316. As such, the system 316 provides securitymechanisms to keep each tenant's data separate unless the data isshared. If more than one MTS is used, they may be located in closeproximity to one another (e.g., in a server farm located in a singlebuilding or campus), or they may be distributed at locations remote fromone another (e.g., one or more servers located in city A and one or moreservers located in city B). As used herein, each MTS could include oneor more logically and/or physically connected servers distributedlocally or across one or more geographic locations. Additionally, theterm “server” is meant to include a computer system, includingprocessing hardware and process space(s), and an associated storagesystem and database application (e.g., OODBMS or RDBMS) as is well knownin the art. It should also be understood that “server system” and“server” are often used interchangeably herein. Similarly, the databaseobject described herein can be implemented as single databases, adistributed database, a collection of distributed databases, a databasewith redundant online or offline backups or other redundancies, etc.,and might include a distributed database or storage network andassociated processing intelligence.

FIG. 4 also illustrates the environment 310. However, in FIG. 4 elementsof the system 316 and various interconnections in an embodiment arefurther illustrated. FIG. 4 shows that the each of the user systems 312may include a processor system 312A, a memory system 312B, an inputsystem 312C, and an output system 312D. FIG. 4 shows the network 314 andthe system 316. FIG. 4 also shows that the system 316 may include thetenant data storage 322, the tenant data 323, the system data storage324, the system data 325, a User Interface (UI) 430, an ApplicationProgram Interface (API) 432, a PL/SOQL 434, save routines 436, anapplication setup mechanism 438, applications servers 400 ₁-400 _(N), asystem process space 402, tenant process spaces 404, a tenant managementprocess space 410, a tenant storage area 412, a user storage 414, andapplication metadata 416. In other embodiments, the environment 310 maynot have the same elements as those listed above and/or may have otherelements instead of, or in addition to, those listed above.

The user systems 312, the network 314, the system 316, the tenant datastorage 322, and the system data storage 324 were discussed above inFIG. 3. Regarding the user systems 312, the processor system 312A may beany combination of one or more processors. The memory system 312B may beany combination of one or more memory devices, short term, and/or longterm memory. The input system 312C may be any combination of inputdevices, such as one or more keyboards, mice, trackballs, scanners,cameras, and/or interfaces to networks. The output system 312D may beany combination of output devices, such as one or more monitors,printers, and/or interfaces to networks. As shown by FIG. 4, the system316 may include the network interface 320 (of FIG. 3) implemented as aset of HTTP application servers 400, the application platform 318, thetenant data storage 322, and the system data storage 324. Also shown isthe system process space 402, including individual tenant process spaces404 and the tenant management process space 410. Each application server400 may be configured to access tenant data storage 322 and the tenantdata 323 therein, and the system data storage 324 and the system data325 therein to serve requests of the user systems 312. The tenant data323 might be divided into individual tenant storage areas 412, which canbe either a physical arrangement and/or a logical arrangement of data.Within each tenant storage area 412, the user storage 414 and theapplication metadata 416 might be similarly allocated for each user. Forexample, a copy of a user's most recently used (MRU) items might bestored to the user storage 414. Similarly, a copy of MRU items for anentire organization that is a tenant might be stored to the tenantstorage area 412. The UI 430 provides a user interface and the API 432provides an application programmer interface to the system 316 residentprocesses to users and/or developers at the user systems 312. The tenantdata and the system data may be stored in various databases, such as oneor more Oracle™ databases.

The application platform 318 includes the application setup mechanism438 that supports application developers' creation and management ofapplications, which may be saved as metadata into the tenant datastorage 322 by the save routines 436 for execution by subscribers as oneor more tenant process spaces 404 managed by the tenant managementprocess 410 for example. Invocations to such applications may be codedusing the PL/SOQL 34 that provides a programming language styleinterface extension to the API 432. A detailed description of somePL/SOQL language embodiments is discussed in commonly owned U.S. Pat.No. 7,730,478 entitled, METHOD AND SYSTEM FOR ALLOWING ACCESS TODEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICE, byCraig Weissman, filed Sep. 21, 2007, which is incorporated in itsentirety herein for all purposes. Invocations to applications may bedetected by one or more system processes, which manages retrieving theapplication metadata 416 for the subscriber making the invocation andexecuting the metadata as an application in a virtual machine.

Each application server 400 may be communicably coupled to databasesystems, e.g., having access to the system data 325 and the tenant data323, via a different network connection. For example, one applicationserver 400 ₁ might be coupled via the network 314 (e.g., the Internet),another application server 400 _(N−1) might be coupled via a directnetwork link, and another application server 400 _(N) might be coupledby yet a different network connection. Transfer Control Protocol andInternet Protocol (TCP/IP) are typical protocols for communicatingbetween application servers 400 and the database system. However, itwill be apparent to one skilled in the art that other transportprotocols may be used to optimize the system depending on the networkinterconnect used.

In certain embodiments, each application server 400 is configured tohandle requests for any user associated with any organization that is atenant. Because it is desirable to be able to add and remove applicationservers from the server pool at any time for any reason, there ispreferably no server affinity for a user and/or organization to aspecific application server 400. In one embodiment, therefore, aninterface system implementing a load balancing function (e.g., an F5Big-IP load balancer) is communicably coupled between the applicationservers 400 and the user systems 312 to distribute requests to theapplication servers 400. In one embodiment, the load balancer uses aleast connections algorithm to route user requests to the applicationservers 400. Other examples of load balancing algorithms, such as roundrobin and observed response time, also can be used. For example, incertain embodiments, three consecutive requests from the same user couldhit three different application servers 400, and three requests fromdifferent users could hit the same application server 400. In thismanner, the system 316 is multi-tenant, wherein the system 316 handlesstorage of, and access to, different objects, data and applicationsacross disparate users and organizations.

As an example of storage, one tenant might be a company that employs asales force where each salesperson uses the system 316 to manage theirsales process. Thus, a user might maintain contact data, leads data,customer follow-up data, performance data, goals and progress data,etc., all applicable to that user's personal sales process (e.g., in thetenant data storage 322). In an example of a MTS arrangement, since allof the data and the applications to access, view, modify, report,transmit, calculate, etc., can be maintained and accessed by a usersystem having nothing more than network access, the user can manage hisor her sales efforts and cycles from any of many different user systems.For example, if a salesperson is visiting a customer and the customerhas Internet access in their lobby, the salesperson can obtain criticalupdates as to that customer while waiting for the customer to arrive inthe lobby.

While each user's data might be separate from other users' dataregardless of the employers of each user, some data might beorganization-wide data shared or accessible by a plurality of users orall of the users for a given organization that is a tenant. Thus, theremight be some data structures managed by the system 316 that areallocated at the tenant level while other data structures might bemanaged at the user level. Because an MTS might support multiple tenantsincluding possible competitors, the MTS should have security protocolsthat keep data, applications, and application use separate. Also,because many tenants may opt for access to an MTS rather than maintaintheir own system, redundancy, up-time, and backup are additionalfunctions that may be implemented in the MTS. In addition touser-specific data and tenant specific data, the system 316 might alsomaintain system level data usable by multiple tenants or other data.Such system level data might include industry reports, news, postings,and the like that are sharable among tenants.

In certain embodiments, the user systems 312 (which may be clientsystems) communicate with the application servers 400 to request andupdate system-level and tenant-level data from the system 316 that mayrequire sending one or more queries to the tenant data storage 322and/or the system data storage 324. The system 316 (e.g., an applicationserver 400 in the system 316) automatically generates one or more SQLstatements (e.g., one or more SQL queries) that are designed to accessthe desired information. The system data storage 324 may generate queryplans to access the requested data from the database.

Each database can generally be viewed as a collection of objects, suchas a set of logical tables, containing data fitted into predefinedcategories. A “table” is one representation of a data object, and may beused herein to simplify the conceptual description of objects and customobjects. It should be understood that “table” and “object” may be usedinterchangeably herein. Each table generally contains one or more datacategories logically arranged as columns or fields in a viewable schema.Each row or record of a table contains an instance of data for eachcategory defined by the fields. For example, a CRM database may includea table that describes a customer with fields for basic contactinformation such as name, address, phone number, fax number, etc.Another table might describe a purchase order, including fields forinformation such as customer, product, sale price, date, etc. In somemulti-tenant database systems, standard entity tables might be providedfor use by all tenants. For CRM database applications, such standardentities might include tables for Account, Contact, Lead, andOpportunity data, each containing pre-defined fields. It should beunderstood that the word “entity” may also be used interchangeablyherein with “object” and “table”.

In some multi-tenant database systems, tenants may be allowed to createand store custom objects, or they may be allowed to customize standardentities or objects, for example by creating custom fields for standardobjects, including custom index fields. U.S. Pat. No. 7,779,039, filedApr. 2, 2004, entitled “Custom Entities and Fields in a Multi-TenantDatabase System”, which is hereby incorporated herein by reference,teaches systems and methods for creating custom objects as well ascustomizing standard objects in a multi-tenant database system. Incertain embodiments, for example, all custom entity data rows are storedin a single multi-tenant physical table, which may contain multiplelogical tables per organization. It is transparent to customers thattheir multiple “tables” are in fact stored in one large table or thattheir data may be stored in the same table as the data of othercustomers.

While one or more implementations have been described by way of exampleand in terms of the specific embodiments, it is to be understood thatone or more implementations are not limited to the disclosedembodiments. To the contrary, it is intended to cover variousmodifications and similar arrangements as would be apparent to thoseskilled in the art. Therefore, the scope of the appended claims shouldbe accorded the broadest interpretation so as to encompass all suchmodifications and similar arrangements.

The invention claimed is:
 1. An apparatus for online chats withoutdisplaying confidential information, the apparatus comprising: one ormore processors; and a non-transitory computer readable medium storing aplurality of instructions, which when executed, cause the one or moreprocessors to: receive, by a confidential information server, aselection of one of a plurality of confidential forms provided fordisplay within a first inline frame in a first chat window associatedwith a first online chat participant; receive, by the confidentialinformation server from second online chat participant, a response basedon an information request sent from the first online chat participant tothe second online chat participant, the information requestcorresponding to the selected confidential form and being sent by thefirst online chat participant to the second online participant to bedisplayed within a second inline frame in a second chat windowassociated with the second online chat participant, the responseincluding confidential information provided by the second online chatparticipant within the second inline frame in the second chat windowassociated with the second online chat participant; retrieve, by theconfidential information server, data associated with the second onlinechat participant based on the confidential information; and send, by theconfidential information server to the first online chat participant, anotification that the response from the second online chat participanthas been received without displaying the confidential information of theresponse to the first online chat participant, the notificationincluding the data associated with the second online chat participant.2. The apparatus of claim 1, wherein the plurality of confidential formsis represented by a plurality of information request objects from whichthe first online chat participant has the option of selecting.
 3. Theapparatus of claim 1, wherein the information request corresponding tothe selected confidential form to be displayed within a second inlineframe in a second chat window associated with the second online chatparticipant is a request for a personal identification number (PIN), andwherein the response received from the second online chat participantcomprises an entry of a PIN by the second online chat participant. 4.The apparatus of claim 1, wherein at least one of the informationrequest object and the response is initiated in an inline frame in achat window.
 5. The apparatus of claim 1, further comprising the stepsof: receiving an online chat request; identifying an agent to respond tothe online chat request based on logic used to identify agents torespond to voice calls; and routing the online chat request to theagent, wherein the agent becomes the first online chat participant.
 6. Acomputer program product comprising computer-readable program code to beexecuted by one or more processors when retrieved from a non-transitorycomputer-readable medium, the program code including instructions to:receive, by a confidential information server, a selection of one of aplurality of confidential forms provided for display within a firstinline frame in a first chat window associated with a first online chatparticipant; receive, by the confidential information server from asecond online chat participant, a response based on an informationrequest sent from the first online chat participant to the second onlinechat participant, the information request corresponding to the selectedconfidential form and being sent by the first online chat participant tothe second online participant to be displayed within a second inlineframe in a second chat window associated with the second online chatparticipant, the response including confidential information provided bythe second online chat participant within the second inline frame in thesecond chat window associated with the second online chat participant;retrieve, by the confidential information server, data associated withthe second online chat participant based on the confidentialinformation; and send, by the confidential information server to thefirst online chat participant, a notification that the response from thesecond online chat participant has been received without displaying theconfidential information of the response to the first online chatparticipant, the notification including the data associated with thesecond online chat participant.
 7. The computer program product of claim6, wherein the plurality of confidential forms is represented by aplurality of information request objects from which the first onlinechat participant has the option of selecting.
 8. The computer programproduct of claim 6, wherein the information request corresponding to theselected confidential form to be displayed within a second inline framein a second chat window associated with the second online chatparticipant is a request for a personal identification number (PIN), andwherein the response received from the second online chat participantcomprises an entry of a PIN by the second online chat participant. 9.The computer program product of claim 6, wherein at least one of theinformation request object and the response is initiated in an inlineframe in a chat window.
 10. The computer program product of claim 6, theprogram code further including instructions to: receive an online chatrequest; identify an agent to respond to the online chat request basedon logic used to identify agents to respond to voice calls; and routethe online chat request to the agent, wherein the agent becomes thefirst online chat participant.
 11. A method for online chats withoutdisplaying confidential information, the method comprising: receiving,by a confidential information server, a selection of one of a pluralityof confidential forms provided for display within a first inline framein a first chat window associated with a first online chat participant;receiving, by the confidential information server from a second onlinechat participant, a response based on an information request sent fromthe first online chat participant to the second online chat participant,the information request corresponding to the selected confidential formand being sent by the first online chat participant to the second onlineparticipant to be displayed within a second inline frame in a secondchat window associated with the second online chat participant, theresponse including confidential information provided by the secondonline chat participant within the second inline frame in the secondchat window associated with the second online chat participant;retrieving, by the confidential information server, data associated withthe second online chat participant based on the confidentialinformation; and sending, by the confidential information server to thefirst online chat participant, a notification that the response from thesecond online chat participant has been received without displaying theconfidential information of the response to the first online chatparticipant, the notification including the data associated with thesecond online chat participant.
 12. The method of claim 11, wherein theplurality of confidential forms is represented by a plurality ofinformation request objects from which the first online chat participanthas the option of selecting.
 13. The method of claim 11, wherein theinformation request corresponding to the selected confidential form tobe displayed within a second inline frame in a second chat windowassociated with the second online chat participant is a request for apersonal identification number (PIN), and wherein the response receivedfrom the second online chat participant comprises an entry of a PIN bythe second online chat participant.
 14. The method of claim 11, whereinat least one of the information request object and the response isinitiated in an inline frame in a chat window.
 15. The method of claim11, the method further comprising: receiving an online chat request;identifying an agent to respond to the online chat request based onlogic used to identify agents to respond to voice calls; and routing theonline chat request to the agent, wherein the agent becomes the firstonline chat participant.
 16. A method for transmitting code for onlinechats without displaying confidential information, the methodcomprising: transmitting code to receive, by a confidential informationserver, a selection of one of a plurality of confidential forms providedfor display within a first inline frame in a first chat windowassociated with a first online chat participant; transmitting code toreceive, by the confidential information server from a second onlinechat participant, a response based on an information request sent fromthe first online chat participant to the second online chat participant,the information request corresponding to the selected confidential formand being sent by the first online chat participant to the second onlineparticipant to be displayed within a second inline frame in a secondchat window associated with the second online chat participant, theresponse including confidential information provided by the secondonline chat participant within the second inline frame in the secondchat window associated with the second online chat participant;transmitting code to retrieve, by the confidential information server,data associated with the second online chat participant based on theconfidential information; and transmitting code to send, by theconfidential information server to the first online chat participant, anotification that the response from the second online chat participanthas been received without displaying the confidential information of theresponse to the first online chat participant, the notificationincluding the data associated with the second online chat participant.17. The method for transmitting code of claim 16, wherein the pluralityof confidential forms is represented by a plurality of informationrequest objects from which the first online chat participant has theoption of selecting.
 18. The method for transmitting code of claim 16,wherein the information request corresponding to the selectedconfidential form to be displayed within a second inline frame in asecond chat window associated with the second online chat participant isa request for a personal identification number (PIN), and wherein theresponse received from the second online chat participant comprises anentry of a PIN by the second online chat participant.
 19. The method fortransmitting code of claim 16, wherein at least one of the informationrequest object and the response is initiated in an inline frame in achat window.
 20. The method for transmitting code of claim 16, themethod further comprising: transmitting code to receive an online chatrequest; transmitting code to identify an agent to respond to the onlinechat request based on logic used to identify agents to respond to voicecalls; and transmitting code to route the online chat request to theagent, wherein the agent becomes the first online chat participant.